#pragma once

namespace Ogre{
	class RenderWindow;
	class SceneManager;
};

/*
This class should be implemented on the client side and passed to the gui system at startup
*/
class GuiEventCallback{
public:
	
};

/**
Abstract interface to the gui system
**/
class Gui{
public:
	static Gui &getSingleton();
	static Gui *getSingletonPtr();
	virtual void	init(Ogre::RenderWindow *window, Ogre::SceneManager *scene)=0;
	virtual void	shutdown()=0;
	virtual void	update()=0;
	virtual void	onMouseMove(int relx, int rely)=0;
	virtual void	onMouseDown(int x, int y, int button)=0;
	virtual void	onMouseUp(int x, int y, int button)=0;
	virtual void	onKeyDown(int keycode, int text)=0;
	virtual void	onKeyUp(int keycode, int text)=0;
};
